1. Technical Field
The present disclosure relates to software obfuscation and more specifically to call path replacement.
2. Introduction
A computer software vendor writes computer software as source code which is readable by a person trained to understand programming languages. Generally the vendor compiles that source code to object code that contains a list of instructions controlling what a computer does. That compiled code can be sold on physical media, downloaded for free, or distributed in any other suitable manner. However, malicious or mischievous individuals with enough time and resources can reverse engineer the compiled code and locate specific functions of interest in compiled computer code and exploit them by calling them directly. The reverse engineers can be individuals desiring to “hack” the compiled code to perform unintended functions, obtain keys, reveal trade secrets, or to achieve other questionable goals.
Once a hacker locates and reverse engineers the appropriate portions of object code, the software may be modified to perform in a manner not anticipated by the software vendor, potentially bypassing Digital Rights Management (DRM) or licensing restrictions, but also potentially causing great harm or injury. For example, a malicious user could alter legitimate code to include a virus or could alter operating software for dangerous machinery to disregard safety protocols.
Inasmuch as functions in traditional software are vulnerable to an attacker calling the function outside of its intended functionality which can lead to security issues for the software vendor, what is needed in the art is a way to prevent attackers from directly calling functions in a software package.